# -*- coding：utf-8 -*-
"""
@Time:2024-08-147:13
@Auth:泛彼泊舟
@File:1、数据类型之间的转化.py
@IDE:PyCharm
@模块功能：数据类型之间的转化
"""
"""
1、字符串元素值为整数或者浮点数类型的转化
- 字符串转化为整数用int()内置方法
- 字符串转化为浮点数用float()内置方法
"""
# 字符串转化为整数类型（前提：字符串的元素为整数才能转化）
str1 = "188"
print(str1)  # 字符串在控制台输出的时候默认会去掉引号
print(type(str1))  # <class 'str'>
# 用内置方法int（）将字符串转化为整数类型
number = int(str1)
print(number)
print(type(number))  # <class 'int'>
# 注意：字符串的元素为整数才能进行转化,如果不是整数元素值那么会报错
name = "张三"
print(name)
# 会报一个值错误，因为不是整数的字符串，不能用int()方法
# print(int(name))  # ValueError: invalid literal for int() with base 10: '张三'

"""
默认的输入都是字符串，将输入的数据进行转化
"""
# 默认所有获取的内容都当做字符串处理
num1 = input("请输入一个整数或者小数：")
print(num1)  # "18" "3.14"
print(type(num1))
# 转化整数类型之后的值
num1 = int(num1)
print(num1)  # 18
print(type(num1))
# 转化浮点数类型之后的值，浮点数转化用float()内置方法
num1 = float(num1)
print(num1)  # 3.14
print(type(num1))
# 总结：如果字符串元素值为整数或者浮点数可以转化为对应的数据类型
# 输入2个数字，将字符串类型转化为整数类型再相加得到结果
num1 = input("请输入第一个整数：")
num2 = input("请输入第二个整数：")
print(num1 + num2)  # "66"+"88" = "6688"
print(int(num1) + int(num2))  # 66+88 = 154

"""
2、将字符串的元素转化为原生的数据类型
- 输入python中支持的数据类型都可以进行对应转化
- 使用内置函数eval()进行转化
"""
print('----------2、原生数据类型转换----------')
# list1 = '[1,2,3]'
# print(list1)
# print(type(list1))  # <class 'str'>
i = input("请输入Python中常用的数据类型：")
print(i)  # '[1,2,3]' '{"name":1}'
print(type(i))  # <class 'str'>
# 使用eval内建函数将字符串元素值转换为Python中对应的数据类型
i = eval(i)
print(i)  # [1, 2, 3]
print(type(i))  # <class 'list'>

"""
3、列表、元组、集合三种数据类型相互转化
"""
# 列表，元组，集合这三种数据类型可以相互转化
list1 = [1, 2, 3, 2, 3, 3, 5, 6, 8, 9, 65, 3, 212, 2, 1, 35, 6]
# 列表转化为元组
print(list1)
print(type(list1))
print("--" * 100)
# 转换为元组，用内置函数tuple()
list1 = tuple(list1)
print(list1)
print(type(list1))  # tuple
# # 将元组转化为列表
print("--" * 100)
# 转化为列表，用内置函数list()
list1 = list(list1)
print(list1)
print(type(list1))  # <class 'list'>
# 将列表转集合：去重
list1 = [1, 2, 3, 2, 3, 3, 5, 6, 8, 9, 65, 3, 212, 2, 1, 35, 6]
print(list1)
# 列表转化为集合去重用内置函数set()
list1 = set(list1)
print(list1)
print("--" * 100)
# # 集合转列表
# print(list(list1))
print(list(set(list1)))  # [1, 2, 3, 65, 5, 6, 35, 8, 9, 212]
# 元组也有可以转集合实现去重的作用
